/*
[]

[]
闭包: 
条件一：函数嵌套
条件二：内部函数使用了外部函数的数据

闭包就是跨作用域访问变量

缺点：造成内存泄露，浪费cpu
*/

/*let x = 23

function fn() {
	let a = 99
	console.log(a)
	console.log(x)
	function f1() {
		console.log(x)
		console.log(a)
	}
	f1()
}
fn()
*/
// 访问a，修改a -> 闭包
// console.log(a)


function fn() {
	let a = 99
	// return a
	return function() {
		a++
		return a
	}
}
let f1 = fn()
console.log(f1()) // 100
f1 = null
f1 = fn()
console.log(f1()); // 101

(function() {
	for(var i = 0; i < 10; i++) {
	}
})()
// ff()

console.log(i)



// console.log(fn()())

// console.log(fn()) // 99 -> 100



